package com.caocaog.market.finance.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.caocaog.market.modules.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author liguang
 * @version 1.0.0
 * @Project jeecg-boot
 * @Package com.caocaog.market.finance.entity
 * @ClassName MkBillHistory.java
 * @createTime 2021年12月03日 17:58:00
 * @Description 账务——账单历史记录表
 */
@Data
@Accessors(chain = true)
@TableName("mk_bill_history")
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="账务模块账单历史记录表", description="账务模块账单历史记录表")
@AllArgsConstructor
@NoArgsConstructor
public class MkBillHistory extends BaseEntity {
    @ApiModelProperty(value="订单号")
    private String orderNo;
    @ApiModelProperty(value="支付状态（1待结算、2已结算、3待退款、4已退款）")
    @Dict(dicCode = "bill_pay_status")
    private int payStatus;
    @ApiModelProperty(value = "支付方式（1 微信小程序调支付接口、2 App调微信支付接口）")
    @Dict(dicCode = "bill_pay_way")
    private int payWay;

    @ApiModelProperty(value = "支付流水号")
    private String paySerno;
    /** 更新时间 */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date payTime;

    @ApiModelProperty(value = "实际支付的金额")
    private String payAmount;
    /**
     * 当pay_status发生改变时，必然要有相对应的原因，原因存在这个字段；
     * 原因有：正常付款（对应状态：待结算）、
     *        退款申请系统审核通过（对应状态：待退款）、
     *        退款申请系统审核通过且退款成功（对应状态：已退款）、
     *        退款申请系统审核通过但退款失败（对应状态：待结算）、
     *        结算完成（对应状态：已结算）
     */
    @ApiModelProperty(value = "状态")
    @Dict(dicCode = "bill_pay_change_reason")
    private int payStatusChangeReason;

    /**
     * 与表mk_bill_history相关联；对应mk_bill_base表中的id字段
     */
    @ApiModelProperty(value = "关联MkBillBase")
    private String billBaseId;
}
